/**
 * 给定A、B两个数组。对A数组进行任意次操作，每次操作：
 * 选择A的一个区间，将其中所有的值改为该区间的最大值。
 * 问能否将A变为B。
 * A、B取值范围均在[1,N]
 * D1版本显然支持O(N^2)的算法
 * 整个过程中，Ai显然是不能减的。
 * 而且假设Ai的最终目标是T，且能够达成最终目标，
 * 则在之前将Ai改为Ai+1/Ai+2/...等值不影响最终结果
 * 因此策略就是尽可能的修改能修改的所有位置
 * for v in [1...N]:
 *     挑出Bi中大于等于v的片段，同时拿到A的对应片段
 *     对挑出来的A的每一段，再把其分为小于等于v的若干段
 *     将这若干段都修改为其本段的最大值
 * 最后检查A是否等于B
 */  
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;

using llt = long long;
using pii = pair<int, int>;
using vi = vector<int>;

int N;
vi A, B;

bool check(int v){
    vi pos; pos.reserve(N);
    int k = 0;
    while(1){
        while(k < N and B[k] < v){
            assert(A[k] == B[k]);
            ++k;
        }
        if(k == N) break;

        int t = 0;
        pos.clear();
        while(k + t < N and B[k+t] >= v){
            if(B[k + t] == v) pos.push_back(k + t);
            ++t;
        }

        if(not pos.empty()){
            int u = k;
            while(1){
                while(u < k + t and A[u] > v) ++u;
                if(u == k + t) break;
                int anchor = A[u];
                int o = 0;
                while(u + o < k + t and A[u+o] <= v){
                    anchor = max(anchor, A[u + o]);
                    ++o;
                }
                fill(A.begin()+u, A.begin()+u+o, anchor);
                u += o;
            }     
            for(auto i : pos)if(A[i]!=v)return false;
        }
        
        k += t;
    }
    return true;
}

bool proc(){
    int mm = *max_element(B.begin(), B.end());
    if(mm != *max_element(A.begin(), A.end())) return false;

    for(int i=1;i<=mm;++i){
        if(not check(i)) return false;
    }

    return true;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    int nofkase = 1;
    cin >> nofkase;
    while(nofkase--){
        cin >> N;
        A.assign(N, 0);
        B.assign(N, 0);
        for(int & i : A) cin >> i;
        for(int & i : B) cin >> i;
        cout << (proc() ? "YES" : "NO") << endl;
    }
    return 0;
}